const NodeCache = require('node-cache')

const cache = new NodeCache({
    /** 默认缓存过期时间 单位秒 为0则无限 */
    tdTTL: 120,
    /** 用于自动删除缓存检查间隔 为0则无定期检查 */
    checkperiod: 120
})

// 获取
const get = (key) => {
    return cache.get(key);
}

// 设置
const set = (key, value, ttl = 300) => {
    return cache.set(key, value, ttl);
}

// 删除
const del = (key) => {
    return cache.del(key);
}

// 获取并删除
const take = (key) => {
    return cache.take(key)
}

// 是否被缓存
const has = (key) => {
    return cache.has(key)
}

// 获取所有key
const keys = () => {
    return cache.keys()
}

cache.on('set', (key, val) => {
    console.log(`${key} --- 已加入缓存`);
})

cache.on('del', (key, val) => {
    console.log(`${key} --- 已删除`);
})

cache.on('expired', (key, val) => {
    console.log(`${key} --- 已过期`);
})

module.exports = {
    get,
    set,
    del,
    take,
    has,
    keys
}